package com.sduept.nwld.dataserver.manager.faultforecast;

import com.sduept.core.dao.SuperDAO;
import com.sduept.nwld.dataserver.model.faultforecast.IceFaultSample;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.sql.SQLException;
import java.util.Date;
import java.util.List;

@Service
public class IceFaultForecastSampleManager {
	@Autowired
	private SuperDAO dao;
	
	public void save(IceFaultSample sample) {
		dao.createOrUpdate(sample,IceFaultSample.class);
	}
	public void save(List<IceFaultSample> samples) throws SQLException {
		dao.persistentBatchUpdate(IceFaultSample.class, samples);
	}
	
	public void deleteAll() {
		dao.deleteAll(IceFaultSample.class);
	}
	
	public List<IceFaultSample> findAll(){
		return dao.findAll(IceFaultSample.class);
	}
	
	public List<IceFaultSample> findByRecordTime(Date time) {
		return dao.findByCondition(IceFaultSample.class, " recordTime = ? ", time);
	}
	
	/**
	 * 根据覆冰开始时间获得样本数据
	 * @param start 开始时间（包括）
	 * @param end 结束时间（不包括）
	 * @return
	 */
	public List<IceFaultSample> findByIceStartTime(Date start,Date end){
		return dao.findByCondition(IceFaultSample.class, " startTime between ? and ? ", start,end);
	}
	/**
	 * 根据覆冰结束时间获得样本数据
	 * @param start 开始时间（包括）
	 * @param end 结束时间（不包括）
	 * @return
	 */
	public List<IceFaultSample> findByIceEndTime(Date start,Date end){
		return dao.findByCondition(IceFaultSample.class, " endTime between ? and ? ", start,end);
	}
	
	/**
	 * 根据覆冰开始时间获得有故障的样本数据
	 * @param start 开始时间（包括）
	 * @param end 结束时间（不包括）
	 * @return
	 */
	public List<IceFaultSample> findFaultSampleByIceStartTime(Date start,Date end){
		return dao.findByCondition(IceFaultSample.class, "faultNum > ? and startTime between ? and ? ", 0, start,end);
	}
	/**
	 * 根据覆冰开始时间获得没有故障的样本数据
	 * @param start 开始时间（包括）
	 * @param end 结束时间（不包括）
	 * @return
	 */
	public List<IceFaultSample> findNonFaultSampleByIceStartTime(Date start,Date end){
		return dao.findByCondition(IceFaultSample.class, "faultNum = ? and startTime between ? and ? ", 0, start,end);
	}
}
